/**
 * @desc 订单类
 */
import OrderDetail from "./OrderDetail";

class Order {
  // 订单 Id，订单日期，顾客地址，顾客名，顾客微信号，顾客手机号，客服
  // public orderId: number = 0;
  // public date: Date = new Date();
  // public custname: string = "nocustname";
  // public phone: string = "111";
  // 这是一个引用属性【数组类型的引用属性】
  // public orderDetail: Array<OrderDetail> = []; // 定义了一个Array数组，Array数组当中的每一个元素都是orderDetail类型的元素

  // 区分局部变量和全局属性通常会加一个`_`来区分
  // constructor(
  //   orderId_: number,
  //   date_: Date,
  //   custname_: string,
  //   phone_: string,
  //   orderDetail_: Array<OrderDetail>
  // ) {
  //   this.orderId = orderId_;
  //   this.date = date_;
  //   this.custname = custname_;
  //   this.phone = phone_;
  //   this.orderDetail = orderDetail_;
  // }
  // 给构造器的参数如果加上public，这个参数就变成了一个属性
  // 这种简洁写法是两部综合体：
  // 第一步：定义了一个属性
  // 第二步：等于默认构造函数会给这个属性赋值【隐式操作】
  constructor(
    public orderId: number,
    public date: Date,
    public custname: string,
    public phone: string,
    public orderDetail: Array<OrderDetail>
  ) {
  }
}
let orderDetailOne = new OrderDetail(10, "电视机", 5000, 3);
let orderDetailTwo = new OrderDetail(11, "桌子", 2000, 2);
let orderDetailArray: Array<OrderDetail> = [orderDetailOne, orderDetailTwo];
let orderDate = new Date(2023, 10, 17, 5, 20, 0);
let order = new Order(1, orderDate, "李武", "333", orderDetailArray);

console.log(order);

